#include <iostream>
#include <vector>

// 1. 类型别名定义
using VecInt = std::vector<int>;  // 将 std::vector<int> 定义为 VecInt，便于使用
void printVector(const VecInt& vec) {
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
}
// 2. 使用命名空间中的特定成员
using std::cout;  // 直接使用 cout 而不需要每次都写 std::cout
using std::endl;
// 3. 使用命名空间，简化代码
namespace my_space {
    void printHello() {
        cout << "Hello, World!" << endl;
    }
}
// 4. 在类继承中使用 using
class Base {
public:
    void show() {
        cout << "Base show function" << endl;
    }
};

class Derived : public Base {
public:
    using Base::show;  // 继承基类的 show 函数，确保不被隐藏
    void show(int x) {
        cout << "Derived show function with int: " << x << endl;
    }
};

int main() {
    VecInt numbers = {1, 2, 3, 4, 5};
    printVector(numbers);  // 使用类型别名

    my_space::printHello();  // 使用命名空间简化后的函数调用

    Derived d;
    d.show();    // 调用 Base 类的 show
    d.show(10);  // 调用 Derived 类的 show

    return 0;
}